<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script>
        /*
        函数是一种特殊的对象
            创建一个函数对象
                -使用构造函数
                    var fun = new Function("console.log("hello");");
                -使用函数声明来创建函数
                    function 函数名([形参1,形参2，...，形参n]){
                        语句...
                    }
                    如：function fun2(){
                        console.log("asdasd");
                        alert("asdas");
                    }
                -使用函数表达式来创建函数
                    var 函数名 = function([形参1,形参2，...，形参n]){
                        语句...
                    };
                    如：var fun3 = function(){
                        console.log("you");
                    };
        
        封装到函数中的代码不会立即执行，只有在函数调用时执行
        调用函数  语法：  函数对象()
        */
        /*
            可使用return来设置函数的返回值
            在函数中return后的语句都不会执行
        */
        function sum(a,b){
            var c = a + b;
            return c;
            /*这句不执行*/
            console.log("qwe");
        }
        /*
            实参可以是任何值任何数据类型
        */
        alert(sum(1,2));

        /*
        立即执行函数,这种函数往往只会执行一次
            函数定义完，立即被调用
        */
        (function(){
            alert("我是一个匿名函数");
        })();

        /*
            函数也可以是对象的属性，如果一个函数作为对象的属性，
            我们称这个函数是这个对象的方法

            var obj = new Object();
            obj.name = "abc";
            obj.sayName = function(){
                console.log(obj.name);
            };
            obj.sayName();
        */
    </script>
</head>
<body>
    
</body>
</html>